Field of the Invention
The present invention generally relates to computer processing and, more specifically, to dynamically supporting custom dependencies during three-dimensional character animation.
Description of the Related Art
As part of animating characters for display, motion is typically conveyed through a sequential set of visual images (frames) that are relayed to a display device, such as a television or screen of a computing device. Each frame differs in a relatively minor way from the proceeding frame and, combined, the frames convey a sense of movement. However, convincingly depicting the movement of animated characters is often difficult and time-consuming. Consequently, many animators use three-dimensional (3D) character animation tools to increase the realism and decrease the design time associated with the animation process.
Some advanced 3D character animation tools enable the animator to pose and move characters using full body inverse kinematics (FBIK). In FBIK, the animator translates and rotates individual body parts, and the 3D character animation tool “solves” each frame—ensuring that the character's full body follows the animator's direction. In one approach to FBIK, the animation tool performs an initial set-up phase followed by a solving phase. During the set-up phase, the animation tool hard-codes the solving order of the object parts following biomechanical principles and observing the constraints imposed by the linkages between the parts. Subsequently, during the solving phase, the animation tool generates frames that depict the motion as constrained by the linkages.
For instance, suppose that the animator were to direct the left hand of a gorilla to grasp a banana from the ground. First, the FBIK animation tool would perform set-up operations—capturing a linkage between the left hand and the gorilla and then creating a hard-coded solving order to reflect this linkage. The 3D character animation tool would then generate a fixed number of frames based on this hard-coded solving order. These frames would convey a “natural” motion of the gorilla—such as bending the gorilla at both the waist and knees to reach the banana.
In one limitation to re-using the hard-coded solving order for multiple frames, dependencies that evolve while the animation tool is performing the solving operations may not be correctly depicted. In particular, the hard-coded solving order may incorrectly capture dynamically changing recursive custom dependencies, where one body part is constrained by another body part. For instance, suppose that, during the solving phase, the animator were to direct the gorilla to hold the banana in both hands instead of only the left-hand. Until the next set-up phase, the animation tool would continue to perform solving operations for the body of the gorilla based on the initial hard-coded solving order. Consequently, the motion of the gorilla would not accurately reflect the linkage between the left hand and the right hand, and the realism of the animation could be dramatically reduced.
To increase the realism of movements, the 3D character animation tool may be configured to perform a new set-up phase for each solving phase—re-determining the hard-coded solving order for each frame. However, typically the time required to perform set-up operations is significantly longer than the time required to perform solving operations. Thus, while increasing the ratio of set-up phases to solving phases may increase the quality of the animation, the time required to generate each frame often increases to unacceptable levels.
As the foregoing illustrates, what is needed in the art is a more effective approach to animating characters for display.